package org.smart4j.framework.util;

import java.io.IOException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * description: JSON 工具类 
 * @version v1.0
 * @author w
 * @date 2018年9月1日下午10:48:27
 */
public class JsonUtil {
	
	private static final Logger logger =	LoggerFactory.getLogger(JsonUtil.class);
	
	private static final ObjectMapper MAPPER = new ObjectMapper();
	
	/**
	 * description: POJO转JSON字符串
	 * @param obj
	 * @return
	 * String
	 * @version v1.0
	 * @author w
	 * @date 2018年9月1日 下午10:50:52
	 */
	public static <T> String toJson(T obj){
		try {
			return 	MAPPER.writeValueAsString(obj);
		} catch (JsonProcessingException e) {
			logger.error("convert POJO to JSON  failure :",e);
			new RuntimeException(e);
		}
		return null;
	}
	
	/**
	 * description: JSON 字符串转 POJO
	 * @param json
	 * @param clzz
	 * @return
	 * T
	 * @version v1.0
	 * @author w
	 * @date 2018年9月1日 下午11:03:38
	 */
	public static <T> T fromJson(String json,Class<T> clzz){
		T obj = null ;
		try {
			 obj = MAPPER.readValue(json, clzz);
		} catch (IOException e) {
			logger.error("convert JSON to POJO  failure :",e);
			new RuntimeException(e);
		}
		return obj;
	}
	
}
